package logica.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * Objeto que gerencia os codigos universais para as entidades do sistema.
 * NENHUMA entidade no Sistema tera codigo igual.
 * Usa persistencia a fim de garantir que esse codigo se mantera induplicavel
 * durante toda a vida util do Sistema.
 * @author Equipe Localisa (Usa quem precisa!)
 */
public class GeradorDeCodigo {

	private static int codigo;
	
	/**
	 * @return O codigo unico do objeto no Sistema
	 */
	public static int getCodigo(){
		
		File arquivo = new File("arquivos/serial");
		ObjectInputStream entradaParaArquivo;
		ObjectOutputStream saidaParaArquivo;
		try{
			if(arquivo.exists()){
				entradaParaArquivo = new ObjectInputStream(new FileInputStream(arquivo));
				codigo = (Integer)entradaParaArquivo.readObject() + 1;
				entradaParaArquivo.close();
				saidaParaArquivo = new ObjectOutputStream(new FileOutputStream(arquivo));
				saidaParaArquivo.writeObject(new Integer(codigo));
				saidaParaArquivo.close();
				
			}
			else{
				arquivo.createNewFile();
				saidaParaArquivo = new ObjectOutputStream(new FileOutputStream(arquivo));
				saidaParaArquivo.writeObject(new Integer(0));
				codigo = 0;
				saidaParaArquivo.close();

			}
		}catch(Exception e){
			
		}
		
		
		return codigo;
	}	
}
